
"""
数据库模块

此模块定义了一个简单的 SQLite 数据库操作类 Database，
用于管理失物招领系统的物品数据存储。

主要功能：
- 连接到 SQLite 数据库
- 获取所有物品记录
- 添加新物品记录
- 关闭数据库连接

依赖：
- sqlite3: Python 内置的 SQLite 数据库模块
"""

import sqlite3


class Database:
    """
    SQLite 数据库操作类

    提供基本的数据库操作方法，包括连接、查询、插入和关闭连接。
    数据库文件默认为 'lost_and_found.db'。
    """
    def __init__(self, db_path='lost_and_found.db'):
        """
        初始化数据库连接

        创建到 SQLite 数据库的连接，并创建游标对象用于执行 SQL 语句。

        参数：
        db_path (str): 数据库文件路径，默认为 'lost_and_found.db'
        """
        self.conn = sqlite3.connect(db_path)
        self.cursor = self.conn.cursor()

    def get_all_items(self):
        """
        获取所有物品记录

        执行 SQL 查询获取 items 表中的所有记录。

        返回：
        list: 包含所有物品记录的列表，每个记录为元组形式
        """
        self.cursor.execute('SELECT * FROM items')
        return self.cursor.fetchall()

    def add_item(self, image_blob, description):
        """
        添加新物品记录到数据库

        将图片二进制数据和描述信息插入到 items 表中。

        参数：
        image_blob (bytes): 物品图片的二进制数据
        description (str): 物品的描述信息
        """
        self.cursor.execute('INSERT INTO items (image, description) VALUES (?, ?)',
                            (image_blob, description))
        self.conn.commit()

    def close(self):
        """
        关闭数据库连接

        关闭游标和数据库连接，释放资源。
        """
        self.cursor.close()
        self.conn.close()


# 调用示例
if __name__ == '__main__':
    db = Database()
    items = db.get_all_items()
    print(items)
    db.close()
